import java.sql.*;
public class DaoMaterialDeEstudo {
	Conexao bd=new Conexao();
	Statement stm=bd.Conectar();
	ResultSet rs;
	/**
	 * Retorna um Material de Estudo especifico do banco de dados
	 * @return Materia de de estudo
	 */
	public MaterialDeEstudo getMaterialDeEstudo(String Nome) { 
		MaterialDeEstudo NewMe = new MaterialDeEstudo();
		try {
			rs=stm.executeQuery("Select * From MaterialDeEstudo where Nome= \"" + Nome + "\";"); 
			while(rs.next()) {
				NewMe.setNome(rs.getString("Nome"));
				NewMe.setConteudo(rs.getString("Conteudo"));
				NewMe.setPorcentualMinimo(Float.parseFloat(rs.getString("PercentualMinimo")));
			}
		}
		catch (SQLException e) {
			e.printStackTrace();
		}
		catch (NullPointerException e) {
			e.printStackTrace();
		}
		catch (Exception e) {
			e.printStackTrace();
		}	
		
		return NewMe;
	}
	
	/**
	 * DaoMaterialDeEstudo.insertNewMaterialDeEstudo
	 * Insere um materia de estudo no banco de dados
	 * @param ME -> Materia de estudo a ser incluido
	 * @return verdadeiro se a inclusao for bem sucedida
	 * falso, se o contrario.
	 */
	public boolean insertNewMaterialDeEstudo(MaterialDeEstudo ME) {
		try {
			float Percentual;
			String Nome,Conteudo;
			
			Nome=ME.getNome();
			Conteudo=ME.getConteudo();
			Percentual=ME.getPorcentualMinimo();
			
			String SQLstr="Insert into MaterialDeEstudo (Nome,Conteudo,PercentualMinimo) values (\"" + Nome + "\",\"" + Conteudo + "\",\"" + Percentual +"\")"; 
			
			stm.executeUpdate(SQLstr);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		return true;
	}
	
	public boolean updateMaterialDeEstudo(MaterialDeEstudo ME) {
		try {
			float Percentual;
			String Nome,Conteudo;
			
			Nome=ME.getNome();
			Conteudo=ME.getConteudo();
			Percentual=ME.getPorcentualMinimo();
			
			String SQLstr="update MaterialDeEstudo set Nome=\""+Nome+
														"\",Conteudo=\""+Conteudo+
														"\",PercentualMinimo=\""+Percentual+"\"" +
														" where Nome=\""+Nome+"\";"; 
			
			stm.executeUpdate(SQLstr);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		return true;
	}
}


class Main {
	public static void main(String[] args) {
		CtlMaterialDeEstudo CtlME=new CtlMaterialDeEstudo();
		MaterialDeEstudo ME;
		
		Conexao con = new Conexao();
		Statement stm=con.Conectar();
		
		try {
			stm.executeUpdate("drop table MaterialDeEstudo;");
			stm.executeUpdate("create table MaterialDeEstudo (Nome varchar(60),Conteudo varchar (10000),PercentualMinimo numeric(2), primary key(Nome) );");	
		
			ME=CtlME.createNewMaterialDeEstudo();
			ME.setNome("Teste1");
			ME.setConteudo("Num quero");
			ME.setPorcentualMinimo(10);
			CtlME.insertNewMaterialDeEstudo(ME);

			DaoMaterialDeEstudo DME=new DaoMaterialDeEstudo();

			ME=DME.getMaterialDeEstudo("Teste1");
			ME.printME();
			ME.setConteudo("agora quero");
			DME.updateMaterialDeEstudo(ME);
			ME.printME();
		}
		catch( Exception e) {
			e.printStackTrace();
		}
	}
}